home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / newsgroups / misc.19981211-19990422 / 000165_news@watsun.cc.columbia.edu _Fri Jan 29 12:18:43 1999.msg < prev    next >
Internet Message Format  |  2020-01-01  |  7KB

  1. Return-Path: <news@watsun.cc.columbia.edu>
  2. Received: from newsmaster.cc.columbia.edu (newsmaster.cc.columbia.edu [128.59.59.30])
  3.     by watsun.cc.columbia.edu (8.8.5/8.8.5) with ESMTP id MAA13893
  4.     for <kermit.misc@watsun.cc.columbia.edu>; Fri, 29 Jan 1999 12:18:43 -0500 (EST)
  5. Received: (from news@localhost)
  6.     by newsmaster.cc.columbia.edu (8.8.5/8.8.5) id MAA12968
  7.     for kermit.misc@watsun.cc.columbia.edu; Fri, 29 Jan 1999 12:08:20 -0500 (EST)
  8. X-Authentication-Warning: newsmaster.cc.columbia.edu: news set sender to <news> using -f
  9. From: jaltman@watsun.cc.columbia.edu (Jeffrey Altman)
  10. Subject: Re: Transparent printing
  11. Date: 29 Jan 1999 17:08:18 GMT
  12. Organization: Columbia University
  13. Message-ID: <78spu2$cl5$1@newsmaster.cc.columbia.edu>
  14. To: kermit.misc@mailrelay2.cc.columbia.edu
  15.  
  16. In article <Gqks2.225$VQ5.2885478@news1.i1.net>,
  17. Scott Nelson <sbnelson@i1.net> wrote:
  18. : I developed a utility similar to FSF's screen program so that our K95
  19. : users connecting over the internet can re-connect to their "session" if
  20. : they get bumped off (phone line or internet problems).  (It ended up
  21. : being easy to add "shadowing" features so that our customer support team
  22. : can connect and help someone).
  23. :     application ---- utility ----- user
  24. : The link between the utility and the user can be broken and
  25. : reestablished without the application even knowing about it.  Pretty
  26. : snazzy isn't it :-).  It allows us to use our legacy application over
  27. : the internet, using kermit with encryption and authentication.  The
  28. : application displays its data even if there is no connection on the
  29. : other end.  When the user re-connects, the utility sends a "refresh the
  30. : screen" function key to the application and bingo - they are back where
  31. : they need to be.  The reason I don't block data when the user
  32. : disconnects is that I don't know exactly when the user gets
  33. : disconnected.  Sometimes, it's not until they login again.  That's why I
  34. : let the data pass freely when disconnected and then have a simple
  35. : "refresh" fkey.
  36.  
  37. There is a commerical package called FacetTerm from Structured
  38. Software Solutions that does something similar.  FacetTerm supports
  39. multiple sessions that the user can switch between.  The way it works
  40. is that the "utility" would actually store the active screen contents
  41. (in other words it has a built in emulator for each terminal type) so
  42. that when the "user" re-connects or switches sessions the screen can
  43. be restored to the appropriate state without interfering with the
  44. application (not all applications will handle a refresh screen
  45. properly.)
  46.  
  47. I think that by not blocking the application when the user 
  48. is deconnected that you leave yourself open to a series of potential 
  49. problems depending on the state the terminal was in.  Your method
  50. assumes that the terminal is always in the default state.  What happens
  51. if the character-set tables are initialized by the host, margins are
  52. adjusted, wrap flags, keys are refdefined, colors set, or any of the
  53. hundreds of other bits of state information that would need to be 
  54. restored when either a connection is restored or the support group wants 
  55. to join a session mid-stream?
  56.  
  57. : My problem is printing.
  58. : 1) You loose printer output when disconnected; user must request report
  59. : again (and hopefully they stay online longer)
  60. : 2) Long reports to the screen makes it impossible to use the screen.
  61. : 3) We can't share the printer.  (The data is sent directly by the
  62. : application; not by a spooler)
  63. : What I would like to do is this:  Have my utility read two pseudo ttys
  64. : instead of one; one from the application and one from the spooler.  It
  65. : would then multiplex this output to the user.  I could give the
  66. : application priority over the spooler.  I guess I would also need to
  67. : interpret the application's output to prevent breaking up an escape
  68. : sequence.
  69. : Any ideas on how I should do this?  Originally I thought that I was
  70. : going to use only K95 in scoansi mode and could use a formula to
  71. : determine when an escape sequence ends, but now I have learned that I
  72. : need to support all terminals connected directly to the system (They
  73. : loved the customer support shadowing idea).
  74. : Moreever, I don't have ANY solution to #1 above.
  75.  
  76. Your first problem is that the application sends the printer output
  77. to the terminal using transparent print sequences.  If you can't change
  78. the application to print to a spooler the only way you are going to be
  79. able to affect the method of printing is for your "utiltiy" to recognize
  80. the transparent print sequence and strip the print job and send it to 
  81. a spooler or something else.
  82.  
  83. So now you have the print job in a spooler.  But you still want the
  84. user's terminal emulator to get the output.  You can continue to send
  85. the spool data to the terminal using transparent print sequences but
  86. now you have introduced a new problem.  Since you are breaking a
  87. single job up into multiple pieces, how does the terminal emulator now
  88. when one job has finished and a second job has begun?  The only way 
  89. to be sure that a terminal will print a job in one piece is to send it 
  90. as one piece. 
  91.  
  92. If you are thinking about using a new method for multiplexing the 
  93. print data over the connection then you are going to have to make 
  94. sure that all of the terminals that you are using can support it.
  95. (Probably not feasible without replacing all existing terminals
  96. and emulation software with something new.)
  97.  
  98. Of course, if you are using TCP/IP connections you could setup
  99. LPDs on each of the clients to accept the print job from the 
  100. spooler, but that would also mean bypassing the authentication
  101. and encryption you received via the Telnet session.
  102.  
  103. As for knowing when an escape sequence is complete.  This is
  104. fairly easy to do with SCOANSI and any other terminal based on
  105. ANSI X3.64, ISO 6429, or HP Term0 since these terminal types use
  106. highly structured state machines.  Any of the so called ASCII terminals
  107. such as Wyse, Televideo, ADDS, Data General, QNX, VT52, etc. will
  108. require that your "utility" implement a complete terminal emulation
  109. for each model because there is no predicatable way of knowing the
  110. length of a particular escape sequence.
  111.  
  112. I don't want to discourage you but what started off as a neat utility
  113. has suddenly become very complicated.
  114.  
  115.     Jeffrey Altman * Sr.Software Designer * Kermit-95 for Win32 and OS/2
  116.                  The Kermit Project * Columbia University
  117.               612 West 115th St #716 * New York, NY * 10025
  118.   http://www.kermit-project.org/k95.html * kermit-support@kermit-project.org